package com.chushouya.product.service.admin;

import com.general.framework.core.schema.PageResult;
import com.chushouya.product.dto.admin.attribute.AttributeItemCombineDTO;
import com.chushouya.product.dto.admin.attribute.AttributeItemValueDetailDTO;
import com.chushouya.product.dto.admin.attribute.AttributeItemValueListDTO;
import com.chushouya.product.dto.admin.attribute.AttributeItemValueQuery;
import com.chushouya.product.dto.admin.attribute.AttributeItemValueSaveDTO;
import com.chushouya.product.dto.admin.attribute.AttributeItemValueUpdateDTO;

import java.util.List;

/**
 * SKU属性值业务
 */
public interface AttributeItemValueService {

    /**
     * 分页查询SKU属性值
     * @param query 参数
     * @return 分页对象
     */
    PageResult<AttributeItemValueListDTO> selectAttributeItemValuePageResult(AttributeItemValueQuery query);

    /**
     * 查询SKU属性值列表
     * @param query 参数
     * @return 列表
     */
    List<AttributeItemValueListDTO> selectAttributeItemValueList(AttributeItemValueQuery query);

    /**
     * 根据ID查询SKU属性值
     * @param attrValueId SKU属性值ID
     * @return SKU属性值详情
     */
    AttributeItemValueDetailDTO getAttributeItemValueDetail(Long attrValueId);

    /**
     * 新增SKU属性值
     * @param attributeItemValue SKU属性值
     * @return ID
     */
    Long addAttributeItemValue(AttributeItemValueSaveDTO attributeItemValue);

    /**
     * 修改SKU属性值
     * @param attributeItemValue SKU属性值
     * @return ID
     */
    Long editAttributeItemValue(AttributeItemValueUpdateDTO attributeItemValue);

    /**
     * 删除SKU属性值
     * @param attrValueId SKU属性值ID
     */
    void removeAttributeItemValue(Long attrValueId);

    /**
     * 根据属性ID查询SKU属性值列表
     * @param attrId 属性ID
     * @return 列表
     */
    List<AttributeItemValueListDTO> selectAttributeItemValueListByAttrId(Long attrId);

    /**
     * 查询SKU属性和属性值组合信息列表
     * @param categoryId 分类ID
     * @return SKU属性和属性值组合信息列表
     */
    List<AttributeItemCombineDTO> selectAttributeItemCombineList(Long categoryId);
}
